服务器端实现
视频锁定
{$ currentTime | date:'mm:ss' $}
{$ timeLeft | date:'mm:ss' $}
如下的GreetingServer程序是一个服务器端应用程序,该程序使用Socket来监听一个指定的端口。
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketTimeoutException;
public class GreetingServer {
public static void main(String[] args) {
ServerSocket serverSocket = null;
int port = 6666;
try {
serverSocket = new ServerSocket(port);
while (true) {
try {
System.out.println("服务器监听端口: " + serverSocket.getLocalPort() + "...");
// 等待客户端请求
Socket server = serverSocket.accept();
System.out.println("客户端Socket地址: " + server.getRemoteSocketAddress());
// 读取客户端发送的数据
DataInputStream in = new DataInputStream(server.getInputStream());
System.out.println("[Server:接收数据]: " + in.readUTF());
// 将结果返回给客户端
DataOutputStream out = new DataOutputStream(server.getOutputStream());
out.writeUTF("感谢访问<" + server.getLocalSocketAddress() + ">, 再见!");
// 关闭Socket
server.close();
} catch (SocketTimeoutException s) {
System.out.println("Socket超时");
break;
} catch (IOException e) {
e.printStackTrace();
break;
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
编译客户端和服务器程序,首先启动服务器端程序,步骤如下:
$ java GreetingServer
服务器监听端口: 6666...
启动客户端程序,步骤如下:
$ java GreetingClient
客户端输出:
准备连接至服务器: localhost, 端口: 6666
服务器Socket地址: localhost/127.0.0.1:6666
[Client:接收数据]: 感谢访问, 再见!
服务器端输出:
服务器监听端口: 6666...
客户端Socket地址: /127.0.0.1:49380
[Server:接收数据]: /127.0.0.1:49380
服务器监听端口: 6666...
在线练习
{$ activeFileHint $}